package com.browsesoft.dbtools.sqlserver;

import java.util.Iterator;

import org.w3c.dom.Element;

import com.browsesoft.dbtools.ObjectSource;

/**
 * 代表一个数据库文件所有数据存放的目录，一个表存放在以表名命名的文件中，目录中 有一个tablestruct文件存放数据库结构
 */
public class DatabaseDirectory implements ObjectSource {
	/**
	 * 路径名
	 */
	private String directory;

	/**
	 * 所对应的数据库结构
	 */
	private TableStructFile tableStructs;

	/**
	 * 空构造
	 */
	public DatabaseDirectory() {
	}

	/**
	 * 使用路径构造
	 */
	public DatabaseDirectory(String directory) {
		this.setDirectory(directory);
	}

	/**
	 * 设置路径
	 * 
	 * @param directory
	 *            路径
	 */
	public void setDirectory(String directory) {
		this.directory = directory;
		// 构造数据库结构文件
		this.tableStructs = new TableStructFile(directory + "/tablestruct.sql");
	}

	/**
	 * 根据表名字段条件取得数据内容，迭代中的内容为Map形式的属性表
	 * 
	 * @param tableName
	 *            表名
	 */
	public Iterator getData(String tableName, String condition) {
		// 根据表名得到表结构
		TableStruct item = this.tableStructs.getTableStruct(tableName);
		// 生成数据表文件
		String fileName = directory + "/" + item.getTableName();
		TableDataFile dataFile = new TableDataFile(fileName, item);
		// 根据条件得到数据
		return dataFile.getData(condition);
	}

	/**
	 * 设置数据源环境
	 * 
	 * @param e
	 *            在属性文件中以元素表示的数据源环境
	 */
	public void setEnvironment(Element e) {
		// 从环境中得到路径
		String directory = e.getAttribute("directory");
		this.setDirectory(directory);
	}

	/**
	 * 关闭数据源
	 */
	public void close() {
	}
}